package com.kxmall.huishou.domain.bo;

import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.kxmall.common.core.domain.BaseEntity;
import com.kxmall.common.core.validate.AddGroup;
import com.kxmall.common.core.validate.EditGroup;
import lombok.Data;
import lombok.EqualsAndHashCode;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * 回收预约订单信息业务对象 hs_appointment_order
 *
 * @author kxmall
 * @date 2023-11-23
 */

@Data
@EqualsAndHashCode(callSuper = true)
public class HsAppointmentOrderBo extends BaseEntity {

    /**
     * 
     */
    @NotNull(message = "不能为空", groups = { EditGroup.class })
    private Long id;

    /**
     * 订单编号
     */
//    @NotBlank(message = "订单编号不能为空", groups = { AddGroup.class, EditGroup.class })
    private String orderNo;

    /**
     * 用户id
     */
//    @NotBlank(message = "用户id不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long userId;

    /**
     * 联系人
     */
    @NotBlank(message = "联系人不能为空", groups = { AddGroup.class, EditGroup.class })
    private String contactor;

    /**
     * 联系电话
     */
    @NotBlank(message = "联系电话不能为空", groups = { AddGroup.class, EditGroup.class })
    private String phone;

    /**
     * 省
     */
    @NotBlank(message = "省不能为空", groups = { AddGroup.class, EditGroup.class })
    private String province;

    /**
     * 市
     */
    @NotBlank(message = "市不能为空", groups = { AddGroup.class, EditGroup.class })
    private String city;

    /**
     * 区
     */
    @NotBlank(message = "区不能为空", groups = { AddGroup.class, EditGroup.class })
    private String county;

    /**
     * 详细地址
     */
    @NotBlank(message = "详细地址不能为空", groups = { AddGroup.class, EditGroup.class })
    private String address;

    /**
     * 经度
     */
    private BigDecimal longitude;

    /**
     * 纬度
     */
    private BigDecimal latitude;

    /**
     * 预约开始时间
     */
    @NotNull(message = "预约开始时间不能为空", groups = { AddGroup.class, EditGroup.class })
    private Date startTime;

    /**
     * 预约结束时间
     */
    @NotNull(message = "预约结束时间不能为空", groups = { AddGroup.class, EditGroup.class })
    private Date endTime;

    /**
     * 预计总重量
     */
    @NotNull(message = "预计总重量不能为空", groups = { AddGroup.class, EditGroup.class })
    private BigDecimal expectWeightTal;

    /**
     * 预计总金额
     */
    @NotNull(message = "预计总金额不能为空", groups = { AddGroup.class, EditGroup.class })
    private BigDecimal expectAmountTal;

    /**
     * 回收员id
     */
//    @NotNull(message = "回收员id不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long riderId;

    /**
     * 接单时间
     */
//    @NotNull(message = "接单时间不能为空", groups = { AddGroup.class, EditGroup.class })
    private Date takingTime;

    /**
     * 到达时间
     */
//    @NotNull(message = "到达时间不能为空", groups = { AddGroup.class, EditGroup.class })
    private Date arriveTime;

    /**
     * 完成时间
     */
//    @NotNull(message = "完成时间不能为空", groups = { AddGroup.class, EditGroup.class })
    private Date completeTime;


//    @ExcelProperty(value = "0无回收员结算信息，1有回收员结算信息")
    private Integer statusSettlement;
    /**
     * 0待接单，1用户取消，2已接单，待服务，3转单中，4服务中，5成功，待评价，6成功，已评价，7服务失败，待评价，8服务失败，已评价，9超时结束
     */
//    @NotNull(message = "0待接单，1用户取消，2已接单，待服务，3转单中，4服务中，5成功，待评价，6成功，已评价，7服务失败，待评价，8服务失败，已评价不能为空, 9超时结束", groups = { AddGroup.class, EditGroup.class })
    private Long status;
    /**
     * 是否已删除 默认0
     */
    @TableLogic(value = "0",delval = "1")
    private Integer isDel;

    /**
     * 小程序提交时，该参数必填
     * 否则将不会触发下发模板消息
     */
    private String fromId;

    private List<HsUserWasteBo> hsUserWasteBoList;





}
